from abc import ABC, abstractmethod


LOG_LEVELS = {
    "debug": 1,
    "info": 2,
    "warn": 3,
    "error": 4,
    "fatal": 5,
}
LOG_LEVEL_NAMES = [None, "debug", "info", "warn", "error", "fatal"]


class AbstractLogger(ABC):
    @abstractmethod
    def debug(self, msg: str, /, **kwargs):
        pass

    @abstractmethod
    def info(self, msg: str, /, **kwargs):
        pass

    @abstractmethod
    def warn(self, msg: str, /, **kwargs):
        pass

    @abstractmethod
    def error(self, msg: str, /, **kwargs):
        pass

    @abstractmethod
    def fatal(self, msg: str, /, **kwargs):
        pass
